home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 34.zip / BS1 part 34 / GFA basic training.adf / Erweiterung / 3DKUBUS.LST < prev    next >
File List  |  1989-06-01  |  2KB  |  116 lines

  1. ' 3D-Würfel als drehend animiert
  2. '
  3. EVERY 10 GOSUB raus     ! Damit der Abbruch garantiert ist
  4. @auf
  5. REPEAT
  6.   @drehe
  7. UNTIL MOUSEK
  8. @zu
  9. EDIT
  10. '
  11. '
  12. PROCEDURE auf
  13.   OPENS 1,0,0,320,256,1,0
  14.   OPENS 2,0,0,320,256,1,0
  15.   g&=90         ! Absolute Größe
  16.   o&=115        ! Absolute x-Posistion
  17.   p&=110        ! Absolute y-Position
  18.   q%=o&+g&/2    ! Radius vorne
  19.   r%=p&+g&/4    ! Radius hinten
  20. RETURN
  21. PROCEDURE drehe
  22.   FOR n=0 TO 2*PI STEP PI/45
  23.     @knupel
  24.     winkel1=g&*COS(n)
  25.     winkel2=g&*SIN(n)
  26.     a1=o&+winkel1
  27.     b1=p&+winkel2
  28.     a5=q%+winkel1
  29.     b5=r%+winkel2
  30.     winkel1=g&*COS(n+PI/2)
  31.     winkel2=g&*SIN(n+PI/2)
  32.     a2=o&+winkel1
  33.     b2=p&+winkel2
  34.     a6=q%+winkel1
  35.     b6=r%+winkel2
  36.     winkel1=g&*COS(n+PI)
  37.     winkel2=g&*SIN(n+PI)
  38.     a3=o&+winkel1
  39.     b3=p&+winkel2
  40.     a7=q%+winkel1
  41.     b7=r%+winkel2
  42.     winkel1=g&*COS(n+1.5*PI)
  43.     winkel2=g&*SIN(n+1.5*PI)
  44.     a4=o&+winkel1
  45.     b4=p&+winkel2
  46.     a8=q%+winkel1
  47.     b8=r%+winkel2
  48.     '
  49.     @zeichnen
  50.     '
  51.   NEXT n
  52. RETURN
  53. PROCEDURE zeichnen
  54.   ' Immer sichtbares Vordergrund-Quadrat zeichnen:
  55.   LINE a1,b1,a2,b2
  56.   DRAW  TO a3,b3
  57.   DRAW  TO a4,b4
  58.   DRAW  TO a1,b1
  59.   ' Welche Seite ist sichtbar ?
  60.   IF a5>a4 AND a5>a3
  61.     LINE a1,b1,a5,b5
  62.     DRAW  TO a6,b6
  63.     DRAW  TO a2,b2
  64.   ENDIF
  65.   '
  66.   IF a6>a1 AND a6>a4
  67.     LINE a2,b2,a6,b6
  68.     DRAW  TO a7,b7
  69.     DRAW  TO a3,b3
  70.   ENDIF
  71.   '
  72.   IF a7>a2 AND a7>a1
  73.     LINE a3,b3,a7,b7
  74.     DRAW  TO a8,b8
  75.     DRAW  TO a4,b4
  76.   ENDIF
  77.   '
  78.   IF a8>a3 AND a8>a2
  79.     LINE a4,b4,a8,b8
  80.     DRAW  TO a5,b5
  81.     DRAW  TO a1,b1
  82.   ENDIF
  83.   ' Bildschirmwechsel :
  84.   COLOR 0
  85.   FRONTS buffer!+2              ! Leeren Screen in den Vordergrund
  86.   RASTPORT SCREEN(1-buffer!)+84
  87.   PBOX 0,0,320,256              ! Da kein Window benutzt wird, muß statt CLS
  88.   '                               mit PBOX gelöscht werden
  89.   buffer!=NOT buffer!           ! Den anderen Screen zum Vordergrund machen
  90.   COLOR 1
  91. RETURN
  92. PROCEDURE zu
  93.   CLOSES 2
  94.   CLOSES 1
  95. RETURN
  96. PROCEDURE raus
  97.   IF MOUSEK
  98.     @zu
  99.     EDIT
  100.   ENDIF
  101. RETURN
  102. PROCEDURE knupel
  103.   SELECT STICK(1)
  104.   CASE 1
  105.     INC g&
  106.   CASE 2
  107.     DEC g&
  108.   CASE 4
  109.     DEC o&
  110.     q%=o&+g&/2
  111.   CASE 8
  112.     INC o&
  113.     q%=o&+g&/2
  114.   ENDSELECT
  115. RETURN
  116.